function sortArray(nums) {
    // 主函数，调用归并排序函数
    return mergeSort(nums)
 }

 function mergeSort(nums) {
    // 基本情况：如果数组长度小于等于 1，直接返回
    if (nums.length <= 1) {
       return nums
    }

    // 计算中点
    const mid = Math.floor(nums.length / 2)

    // 分别对左右两部分进行排序
    const left = mergeSort(nums.slice(0, mid))
    const right = mergeSort(nums.slice(mid))

    // 合并排序好的左右两部分
    return merge(left, right)
 }

 function merge(left, right) {
    const sortedArray = []
    let i = 0
    let j = 0

    // 合并两个有序数组
    while (i < left.length && j < right.length) {
       if (left[i] < right[j]) {
          sortedArray.push(left[i])
          i++
       } else {
          sortedArray.push(right[j])
          j++
       }
    }

    // 将剩余的元素添加到结果数组
    while (i < left.length) {
       sortedArray.push(left[i])
       i++
    }
    while (j < right.length) {
       sortedArray.push(right[j])
       j++
    }

    return sortedArray
 }

 // 示例测试
 console.log(sortArray([5, 2, 3, 1])) // 输出：[1, 2, 3, 5]
 console.log(sortArray([5, 1, 1, 2, 0, 0])) // 输出：[0, 0, 1, 1, 2, 5]